﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados_.ClassesDados;
using System.ComponentModel;
using Dados_.ValueObjects;

namespace Negocios
{
    [DataObject]
    public class ClienteMetodos
    {
        [DataObjectMethod(DataObjectMethodType.Insert, true)]
        public bool Inserir(ClienteBO pBO)
        {
            ClienteSQL pSQL = new ClienteSQL();
            
            pSQL.inserir(pBO.Cpf, pBO.Nome, pBO.Endereco, pBO.Telefone, pBO.Email, pBO.DataNasc);

            return true;
        }
        [DataObjectMethod(DataObjectMethodType.Insert, true)]
        public bool inserir(String cpf, String nome, String endereco, String telefone, String email, DateTime dataNasc)
        {
            bool retorno = false;
            ClienteSQL cliente = new ClienteSQL();
            try
            {
                cliente.inserir(cpf, nome, endereco, telefone, email, dataNasc);
                retorno = true;
            }
            catch (Exception e)
            {
                retorno = false;
            }
            return retorno;
        }
        
        [DataObjectMethod(DataObjectMethodType.Delete, true)]
        public bool deletar(String cpf)
        {
            bool retorno = false;
            ClienteSQL cliente = new ClienteSQL();
            retorno = true;
            try
            {
                cliente.deletar(cpf);
            }
            catch (Exception e)
            {
                retorno = false;
            }
            return retorno;
        }
        
        public ClienteBO getCliente(string cpf)
        {
            ClienteSQL cliente = new ClienteSQL();
            ClienteVO vo = new ClienteVO();
            vo = cliente.getCliente(cpf);
            ClienteBO bo = new ClienteBO();
            bo.Cpf = vo.Cpf;
            bo.DataNasc  = vo.DataNasc;
            bo.Email = vo.Email;
            bo.Endereco = vo.Endereco;
            bo.Nome = vo.Nome;
            bo.Telefone = vo.Telefone;
            return bo;
        }


        [DataObjectMethod(DataObjectMethodType.Select, true)]
        public List<ClienteBO> Consultar(String nome)
        { 
            ClienteSQL pSQL = new ClienteSQL();
            List<ClienteVO> lpVO = pSQL. getClienteAll(nome);
            List<ClienteBO> lpBO = new List<ClienteBO>();
            
            foreach (ClienteVO pVO in lpVO)
            {
               ClienteBO pBO = new ClienteBO();
                pBO.Cpf = pVO.Cpf;
                pBO.Email = pVO.Email;
                pBO.Endereco = pVO.Endereco;
                pBO.Nome = pVO.Nome;
                pBO.DataNasc = pVO.DataNasc;
                pBO.Telefone = pVO.Telefone;
               lpBO.Add(pBO);
            }
            return lpBO;

            }
                 

        public bool alterar(string cpf, string nome, string endereco, string telefone, string email, DateTime dataNasc)
        {
            bool retorno = false;
            ClienteSQL cliente = new ClienteSQL();
            try
            {
                cliente.alterar(cpf, nome, endereco, telefone, email, dataNasc);
                retorno = true;
            }
            catch (Exception e)
            {
                retorno = false;
            }
            return retorno;
        }
    }
}
